/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tamnhat.controller;

import com.tamnhat.entity.ContTemDetail;
import com.tamnhat.entity.ContentTemplate;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author Administrator
 */
public class ContTemDetailController implements Serializable{
    
    private ContTemDetail currentCtd = new ContTemDetail();
    private DataModel list;
    private boolean addStatus = false;
    private ContentTemplate currentTemp = new ContentTemplate();
    private List<ContTemDetail> listCTD = new ArrayList<ContTemDetail>();

    /**
     * Creates a new instance of ContTemDetailController
     */
    public ContTemDetailController() {         
    }

    public ContentTemplate getCurrentTemp() {
        return currentTemp;
    }

    public void setCurrentTemp(ContentTemplate currentTemp) {
        this.currentTemp = currentTemp;
    }

    public ContTemDetail getCurrentCtd() {
        return currentCtd;
    }

    public void setCurrentCtd(ContTemDetail currentCtd) {
        this.currentCtd = currentCtd;
    }

    public List<ContTemDetail> getListCTD() {
        return listCTD;
    }

    public void setListCTD(List<ContTemDetail> listCTD) {
        this.listCTD = listCTD;
    }

    public DataModel getList() {
        return list;
    }

    public void setList(DataModel list) {
        this.list = list;
    }

    public boolean isAddStatus() {
        return addStatus;
    }

    public void setAddStatus(boolean addStatus) {
        this.addStatus = addStatus;
    }

    //--------------------
    public void clearField() {
        currentCtd = new ContTemDetail();
    }

    public String ctdFromTable() {
        currentCtd = (ContTemDetail) list.getRowData();        
        return "";
    }

    public boolean checkInput() {
        if (currentCtd.getPropertyName() == null || currentCtd.getPropertyName().equalsIgnoreCase("")) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Property name không được bỏ trống!"));
            return false;
        }
        return true;
    }

    public String rowSelect() {
        try {
            listCTD = ContTemDetail.allCTD(currentTemp.getId());
            list = new ListDataModel(listCTD);
            addStatus = true;
            int i = list.getRowCount();
            if (i > 0) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Có " + i + " bản ghi được tìm thấy!"));
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Không có bản ghi nào được tìm thấy!"));
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("ERROR: " + e.getMessage()));
            e.printStackTrace();
        }
        return "";
    }

    public String updateInsert(){
        clearField();
        return "";
    }
    
    public String insert() {
        try {
            if (checkInput()) {
                currentCtd.setContentTemId(currentTemp);
                if (currentCtd.insert()) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Thêm bản ghi thành công!"));
                    listCTD.add(currentCtd);
                } else {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Có lỗi xảy ra trong quá trình xử lí!"));
                }
            }
            clearField();
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("ERROR: " + e.getMessage()));
            e.printStackTrace();
        }        
        return "";
    }

    public String update() {
        try {
            if (checkInput()) {                                
                if (currentCtd.update()) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Cập nhật bản ghi thành công!"));                    
                } else {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Có lỗi xảy ra trong quá trình xử lí!"));
                }
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("ERROR: " + e.getMessage()));
            e.printStackTrace();
        }finally{
            clearField();
        }
        return "";
    }

    public String remove() {
        try {
            currentCtd = (ContTemDetail) list.getRowData();
            if (currentCtd.remove()) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Xóa bản ghi thành công!"));
                listCTD.remove(currentCtd);
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Xảy ra lỗi trong quá trình xử lí!"));
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("ERROR: " + e.getMessage()));
            e.printStackTrace();
        }
        return "";
    }
}
